/**
 * 操作t_banner表
 */
// 引入数据源
let pool = require('../../datasource.js');

/**
 * 查询列表
 * @param {Object} data 传入参数
 */
module.exports.queryList = function (data) {

    return new Promise((resolve, reject) => {
        let sql = `SELECT
	b.t_banner_pk,
	b.image_path,
	b.update_time,
    b.create_time,
    c.cat_name,
    b.t_cat_fk
FROM
	t_banner b,t_cat c
WHERE b.t_cat_fk = c.t_cat_pk AND b.\`status\` = 1`;

        let params = [];
        sql += buildCondition(data, params);

        sql += ` ORDER BY b.update_time DESC `;

        console.log("sql = ", sql);
        console.log("params = ", params);

        // 执行SQL步骤：1、获取连接
        pool.getConnection((err, connection) => {
            if (err) {
                console.log('[SELECT ERROR] - ', err.message);
                reject(null);
                return;
            }

            // 2、使用连接执行SQL
            // result：查询结果集（可以理解成一个数组）
            connection.query(sql, params, function (err, result) {
                if (err) {
                    console.log("查询出错：", err);
                    reject(null);
                    return;
                }

                // 3、释放连接
                connection.release();

                resolve(result);

            });
        })
    })


}

/**
 * 查询管理员某个模块的所有权限
 * @param {Object} data 传入参数
 * @param {Function} callback 回调函数
 */
module.exports.queryCount = function (data) {

    let promise = new Promise(function (resolve, reject) {
        let sql = `SELECT 
       COUNT(1) c
    FROM
        t_banner b
    WHERE b.status = 1`;


        let params = [];
        sql += buildCondition(data, params);

        console.log("sql = ", sql);
        console.log("params = ", params);

        // 执行SQL步骤：1、获取连接
        pool.getConnection((err, connection) => {
            if (err) {
                console.log('[SELECT ERROR] - ', err.message);
                reject(0);
                return;
            }

            // 2、使用连接执行SQL
            // result：查询结果集（可以理解成一个数组）
            connection.query(sql, params, function (err, result) {
                if (err) {
                    console.log("查询出错：", err);
                    reject(0);
                    return;
                }

                // 3、释放连接
                connection.release();
                resolve(result[0].c);

            });
        })
    });
    return promise;
}

function buildCondition(data, params) {
    let sql = "";
    if (data.t_cat_fk) {
        sql += ` AND b.t_cat_fk = ? `;
        params.push(data.t_cat_fk);
    }
    return sql;
}

/**
 * 删除管理员
 * @param {Object} data 传入参数
 */
module.exports.delete = function (data) {

    let promise = new Promise(function (resolve, reject) {
        let sql = `UPDATE t_banner set status = -1,update_time = now() where t_banner_pk = ?`;

        let params = [data.t_banner_pk];

        console.log("sql = ", sql);
        console.log("params = ", params);

        // 执行SQL步骤：1、获取连接
        pool.getConnection((err, connection) => {
            if (err) {
                console.log('[SELECT ERROR] - ', err.message);
                reject(null);
                return;
            }

            // 2、使用连接执行SQL
            // result：查询结果集（可以理解成一个数组）
            connection.query(sql, params, function (err, result) {
                if (err) {
                    console.log("查询出错：", err);
                    reject(null);
                    return;
                }

                // 3、释放连接
                connection.release();

                resolve(result);

            });
        })
    });
    return promise;
}

/**
 * 修改管理员
 * @param {Object} data 传入参数
 */
module.exports.update = function (data) {
    let params = [];

    let sql = `UPDATE t_banner set update_time = now()`
    if (data.banner_name) {
        sql += `,banner_name = ? `;
        params.push(data.banner_name)
    }
    if (data.mobile) {
        sql += `,mobile = ? `;
        params.push(data.mobile)
    }
    if (data.password) {
        sql += `,password = MD5(?) `;
        params.push(data.password)
    }
    sql += `WHERE t_banner_pk = ?`;
    params.push(data.t_banner_pk)

    console.log("sql = ", sql);
    console.log("params = ", params);

    let promise = new Promise(function (resolve, reject) {

        // 执行SQL步骤：1、获取连接
        pool.getConnection((err, connection) => {
            if (err) {
                console.log('[SELECT ERROR] - ', err.message);
                reject(null);
                return;
            }

            // 2、使用连接执行SQL
            // result：查询结果集（可以理解成一个数组）
            connection.query(sql, params, function (err, result) {
                if (err) {
                    console.log("修改出错：", err);
                    reject(null);
                    return;
                }

                // 3、释放连接
                connection.release();

                resolve(result);

            });
        })
    });
    return promise;
}

/**
 * 增加管理员
 * @param {Object} data 传入参数
 */
module.exports.insert = function (data) {
    let params = [];

    let sql = `INSERT INTO t_banner (image_path,t_cat_fk) values (?,?)`

    params.push(data.image_path)
    params.push(data.t_cat_fk)

    console.log("sql = ", sql);
    console.log("params = ", params);

    let promise = new Promise(function (resolve, reject) {

        // 执行SQL步骤：1、获取连接
        pool.getConnection((err, connection) => {
            if (err) {
                console.log('[SELECT ERROR] - ', err.message);
                reject(null);
                return;
            }

            // 2、使用连接执行SQL
            // result：查询结果集（可以理解成一个数组）
            connection.query(sql, params, function (err, result) {
                if (err) {
                    console.log("增加出错：", err);
                    reject(null);
                    return;
                }

                // 3、释放连接
                connection.release();

                resolve(result);

            });
        })
    });
    return promise;
}